// 学生信息管理路由器模块

// 1. 导入express
const express = require("express");
// 导入stu数据模型对象
const stuModel = require("../models/stuModel");
// 2. 创建路由器对象
const router = express.Router();
// 3. 配置当前信息管理的路由
// (get  /) 浏览学员信息
router.get("/", (req, res) => {
    // 初始化搜索条件和搜索字段信息
    const where = {};
    const feilds = [];
    // 获取搜索条件信息
    if(req.query.name){
        feilds.push({name:req.query.name});
    }
    if(req.query.sex){
        feilds.push({sex:req.query.sex});
    }
    //console.log(feilds);
    // 判断搜索字段信息中否是有值，若有则将信息放置到where中
    if(feilds.length > 0){
        where['$and'] = feilds;
    }
    // 通过stuModel获取MongoDB中学生信息
    stuModel.find(where, (err,data) => {
        if(err) throw err;
        // 加载模板，并渲染数据
        res.render("stu/index",{stuList:data,sexinfo:["女","男","保密"]});
    });
});
// (get  /add) 添加学员信息表单页
router.get("/add", (req, res) => {
    res.render("stu/add");
});
// (post  /doAdd) 执行学员信息添加操作
router.post("/doAdd", (req, res) => {
    // 从请求对象中获取要添加的信息
    const data = req.body;
    //console.log(data);
    // 使用stuModel执行数据信息添加
    stuModel.create(data, (err, data) => {
        if(err) throw err;
        res.send("添加成功！");
    });
});

// (get /del) 执行学员信息删除操作
router.get("/del", (req, res) => {
    // 获取要删除的信息id号
    let id = req.query.id;  // 从get请求url中查询字串中获取
    // 使用stuModel执行数据删除操作
    stuModel.deleteOne({_id:id}, (err, data) => {
        if(err) throw err;
        // 输出删除成功信息
        //res.send("数据删除成功！");
        // 跳转回信息浏览页（首页）,重新展示数据（更新）
        res.redirect("/"); 
    });
});

// (get  /edit) 浏览学员信息编辑表单页
router.get("/edit", (req, res) => {
    // 通过参数获取要编辑的信息id
    let id = req.query.id;
    //console.log("要编辑的信息id：", req.query.id);
    // 通过参数id从数据库中获取要修改的学员信息
    //stuModel.findOne({_id:id}, (err, data)=>{
    stuModel.findById(id, (err, data)=>{
        if(err) throw err;
        // 加载模板并渲染要修改的信息
        res.render("stu/edit",{stu:data});
    });  
});

// (post /doEdit) 执行学员信息的编辑操作
router.post("/doEdit", (req, res) => {
    // 获取提交的信息
    let id = req.query.id; // 通过url查询字串获取要修改信息的id号
    const data = req.body; // 从请求体中获取提交的修改信息
    // 调用model执行数据修改操作
    stuModel.updateOne({_id:id}, data, (err, data) => {
        if(err) throw err;
        // 跳转到首页浏览修改后的信息
        res.redirect("/");
    });
});

// 4. 暴露当前路由器（导出）
module.exports = router;
